using System; 
using com.lowagie.text;
using com.lowagie.text.pdf;
using System.IO;

public class PZ_PDF_Creator
{
    public string[][] listaZajec = {{"Matematyka", "Nowak", "sala 42"}, {"Matematyka", "Nowak", "sala 42"}, {"Matematyka", "Nowak", "sala 42"}, 
                                    {"Matematyka", "Nowak", "sala 42"}, {"Matematyka", "Nowak", "sala 42"}, {"Matematyka", "Nowak", "sala 42"}, 
                                    {"Matematyka", "Nowak", "sala 42"}, {"Matematyka", "Nowak", "sala 42"}, {"Matematyka", "Nowak", "sala 42"}, 
                                    {"Matematyka", "Nowak", "sala 42"}, {"Matematyka", "Nowak", "sala 42"}, {"Matematyka", "Nowak", "sala 42"}, 
                                    {"Matematyka", "Nowak", "sala 42"}, {"Matematyka", "Nowak", "sala 42"}, {"Matematyka", "Nowak", "sala 42"}};
    /*
        Dwuwymiarowa tabela zawierająca uporządkowaną listę wszystkich zajęć według kolejności: zajęcia z poniedziałku (po kolei),
        zajęcia z wtorku itd. Każde zajęcie to tabela 3 łańcuchów znaków: nazwa zajęć, nauczyciel prowadzący, numer sali (+ ewentualnie budynek)
    */
    public int[] ilZajecDzien;//Liczby reprezentujące ilość zajęć na dany dzień według tabeli dniZajec
    public string[] godzinyZajec = {"8:00-8:45", "8:55-9:40", "9:50-10:35", "10:55-11:40", "11:50-12:35"};//tabela zawierające łańcuchy znaków będące reprezentacją uporządkowanych godzin zajęć
    public string nazwaPliku;//Nazwa pliku wynikowego (musi mieć rozszerzenie .pdf)
    public string[] dniZajec = {"Poniedziałek", "Wtorek", "Środa", "Czwartek", "Piątek"};
    
    //Ogólnie mówiąc, ustawiamy te statyczne zmienne i odpalamy jedną z 2 funkcji niżej (do pustego wystarczą tylko 3 ostatnie)

    public void create_empty_pdf()
    {
        Document docPdf = new Document(PageSize.A4.rotate());

        PdfWriter drukarkaPdf = PdfWriter.getInstance(docPdf, new FileStream(this.nazwaPliku, FileMode.Create));

        docPdf.open();

        PdfPTable table = new PdfPTable(len(this.dniZajec) + 1);

        PdfPCell title = new PdfPCell(new Phrase("Plan zajęć"));
        title.Colspan = len(this.dniZajec) + 1;
        title.HorizontalAlignment = 1;
        table.AddCell(title);
        table.AddCell("");
        for (int i = 0; i < len(this.dniZajec); i++)
        {
            PdfPCell tempCell = new PdfPCell(new Phrase(this.dniZajec[i]));
            tempCell.HorizontalAlignment = 1;
            table.AddCell(tempCell);
        }

        for (int x = 0; x < len(this.godzinyZajec); x++)
        {
            PdfPCell tempCell = new PdfPCell(new Phrase(this.godzinyZajec[x]));
            tempCell.HorizontalAlignment = 1;
            table.AddCell(tempCell);
            for (int y = 0; y < len(this.dniZajec); y++)
                table.AddCell("");
        }

        docPdf.Add(table);
        docPdf.close();
    }

    public void create_filled_pdf()
    {
        Document docPdf = new Document(PageSize.A4.rotate());

        PdfWriter drukarkaPdf = PdfWriter.getInstance(docPdf, new FileStream(this.nazwaPliku, FileMode.Create));

        docPdf.open();

        PdfPTable table = new PdfPTable(len(this.dniZajec) + 1);

        PdfPCell title = new PdfPCell(new Phrase("Plan zajęć"));
        title.Colspan = len(this.dniZajec) + 1;
        title.HorizontalAlignment = 1;
        table.AddCell(title);
        table.AddCell("");
        for (int i = 0; i < len(this.dniZajec); i++)
        {
            PdfPCell tempCell = new PdfPCell(new Phrase(this.dniZajec[i]));
            tempCell.HorizontalAlignment = 1;
            table.AddCell(tempCell);
        }

        for (int x = 0; x < len(this.godzinyZajec); x++)
        {
            PdfPCell tempCell = new PdfPCell(new Phrase(this.godzinyZajec[x]));
            tempCell.HorizontalAlignment = 1;
            table.AddCell(tempCell);
            for (int y = 0; y < len(this.dniZajec); y++)
            {
                if (x > this.ilZajecDzien[y] - 1)
                    continue;
                else
                    {
                        int temp = 0;
                        for (int z = 0; z < y; z++)
                            temp += this.ilZajecDzien[z];
                        table.AddCell(this.listaZajec[temp + x][0] + "\n" +
                                      this.listaZajec[temp + x][1] + "\n" +
                                      this.listaZajec[temp + x][2]);
                    }
            }
        }

        docPdf.Add(table);
        docPdf.close();
    }
}
